/*---------------- Program.cs -------------------*/
/*
 * 19. Escribir una aplicación con estos dos espacios de 
 * nombres(namespaces): Geometría y PruebaGeometria.  
 * Dentro del espacio de nombres Geometría se deberán escribir 
 * dos clases: Punto y Rectangulo.  
 * La clase Punto ha de tener dos campos de sólo lectura: X e Y 
 * (que serán las coordenadas del punto).  
 * La clase Rectangulo ha de tener los siguientes atributos del 
 * tipo Punto: Vertice1, Vertice2, Vertice3 y Vertice4 (que 
 * corresponden a los cuatro vértices del cuadrado).  
 * La base de todos los rectángulos de esta clase será siempre 
 * horizontal. También ha de tener los atributos Lado, Área y 
 * Perímetro.  Por otro lado, debe tener un constructor para construir el 
 * rectángulo por medio de los vértices 1 y 3 (Utilizar el 
 * método Abs de la clase Math, dicho método retorna el valor 
 * absoluto de un número). 
 * En el espacio de nombres PruebaGeometria es donde se 
 * escribirá una clase con un método Main para probar si 
 * funcionan las clases escritas anteriormente. En este espacio 
 * de nombres se utilizará la directiva ‘using’ para poder 
 * utilizar todos los miembros del espacio de nombres Geometría 
 * directamente. En este espacio de nombres escribe también un 
 * método que muestre todos los datos de un cuadrado en la 
 * consola.
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Geometria;

namespace PruebaGeometria{
    class Program{
        static void Main(string[] args){
            Console.Title = "Ejercicio 19";
            Punto uno = new Punto(1, 3);
            Punto tres = new Punto(2, 5);
            Rectangulo rect = new Rectangulo(uno, tres);
            rect.Mostrar();
        }
    }
}
/*---------------- Punto.cs -------------------*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Geometria{
    class Punto{
        // atributos
        private int _x;
        private int _y;

        // Metodos
        public int GetX(){
            return this._x;
        }
        public int Gety(){
            return this._y;
        }
        public Punto(int x, int y) {
            this._x = x;
            this._y = y;
        }

    }
}
/*---------------- Rectangulo.cs -------------------*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SC = System.Console;

namespace Geometria{
    class Rectangulo{

        // atributos
        public int lado;
        public int area;
        public int perimetro;
        public int ladoMenor;
        public int ladoMayor;

        private Punto _vertice1;
        private Punto _vertice2;
        private Punto _vertice3;
        private Punto _vertice4;

        // Constructor
        public Rectangulo(Punto ver1, Punto ver3){
            this.ladoMenor = Math.Abs(ver1.GetX() - ver3.GetX());
            this.ladoMayor = Math.Abs(ver1.Gety() - ver3.Gety());
            this.perimetro = (this.ladoMenor * 2) + (this.ladoMayor * 2);
            this.area = ladoMayor * ladoMenor;
        }
        public void Mostrar(){
            SC.WriteLine("El lado Mayor es: "+ this.ladoMayor +
                         "\nEl lado Menor es: "+ this.ladoMenor +
                         "\nEl Area es: "+ this.area +
                         "\nEl Perimetro es: "+ this.perimetro);
            SC.ReadLine();
        }
    }
}
